Many printers offer the ability to print documents with a large variety of text fonts. To provide this capability, the printer includes a memory in which font data is stored. In essence, the font data comprises the information needed to convert a command from a computer, or the like, to print a particular character into the control signals necessary for the printer to print an image of the character in the designated font. Each different shape, or glyph, in the font is defined by a unique code word. To print a document, the computer identifies the font to be used, and then sends the code words for the successive characters.
The number of different fonts that can be printed, and the efficiency with which they are printed, is influenced by the amount of memory in the printer. Typically, the memory of the printer might be pre-loaded with a number of the most common fonts. When printing a document containing these fonts, the code words for the characters in the document are sent directly to the printer, where the prestored font information enables that data to be quickly converted into the appropriate printing signals.
It is sometimes desirable to print characters or symbols other than those contained in the fonts that are prestored in the printer. To accommodate this situation, a font can be downloaded to the printer, and stored in its memory, prior to the commencement of the printing operation itself. If more than one font is required for the document, each font can be downloaded into the memory, and the printer can switch between them as needed. If the size of the printer's memory is not sufficient to hold the data for all of the needed fonts, the printing operation might be halted, as a result of which the document is not printed.
Of course, the performance of the printing operation, particularly the ability to print a document with multiple fonts, can be enhanced by increasing the amount of memory in the printer. However, increased memory also results in a higher price for the printer, and therefore is not always feasible or desirable.
The problem of font management versus memory size is exacerbated in the case of fonts having large character sets. More particularly, many fonts associated with the Roman languages have a maximum of 256 glyphs, i.e. representable shapes. Thus, each glyph can be represented with a single byte of data. However, it may be desirable to print characters from a font which contains more than 256 glyphs. For example, the Chinese alphabet might contain up to 30,000 characters. To encode all of these characters in a font, two bytes of data per glyph are required. In the past, when a font having a large character set was encountered in the document, the entire document was converted into a bit-mapped image at the resolution of the printer, and then sent to the printer. The need to convert the text into a bit map significantly slows the printing operation, relative to the time required to print a document consisting of only 256-character fonts. Furthermore, the time required to convert the document into a bit-mapped image is directly related to the resolution of the printer, as a result of which higher resolution printers are most adversely affected by this process.
In an effort to avoid bit map conversions, an approach has been employed in which a font having a large character set is divided into two or more subfonts, each having a maximum of 256 characters. For example, the first subfont might consist of the first 256 characters in the original font, the next subfont might comprise the second set of 256 characters in the original font, and so on. As the document is printed, the printer switches between the different subfonts as needed to print the individual characters.
The need to switch between the fonts slows the overall printing process, and the management of the multiple subfonts can become complicated. Furthermore, this approach can only be used where the printer has sufficient memory to store all of the subfonts. If the memory is insufficient, such as in the case of fonts having extremely large character sets, for example those of the Asian languages, it is still necessary to convert the document into a bit-mapped image, or to halt the printing operation.
Accordingly, it is desirable to provide a more efficient approach to the management of fonts during an imaging process, particularly in connection with fonts having large character sets.